package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.ClienteDAOSQLServer;
import co.inventario.datos.sqlserver.ZonaDAOSQLServer;
import co.inventario.entidad.ClienteDTO;
import co.inventario.entidad.ZonaDTO;

public class ClienteNegocio {

	public void crear(ClienteDTO clienteDTO, Connection connection) throws Exception, SQLException {
		ClienteDAOSQLServer clienteDAOSQLServer = new ClienteDAOSQLServer();
		ClienteDTO clienteDTOConsultado = clienteDAOSQLServer.consultarPorIdentificacion(clienteDTO, connection);
		if (clienteDTOConsultado == null) {
			clienteDAOSQLServer.crear(clienteDTO, connection);
		} else {
			throw new Exception("El Cliente que intenta crear ya existe.");
		}
	}

	public void actualizar(ClienteDTO clienteDTO, Connection connection) throws Exception, SQLException {
		ClienteDAOSQLServer clienteDAOSQLServer = new ClienteDAOSQLServer();
		ClienteDTO clienteDTOConsultado = clienteDAOSQLServer.consultarPorCodigo(clienteDTO, connection);
		if (clienteDTOConsultado != null) {
			clienteDAOSQLServer.actualizar(clienteDTO, connection);
		} else {
			throw new Exception("El Cliente que intenta actualizar no existe.");
		}
	}

	public ClienteDTO consultarPorCodigo(ClienteDTO clienteDTO, Connection connection) throws Exception, SQLException {
		ClienteDAOSQLServer clienteDAOSQLServer = new ClienteDAOSQLServer();
		ClienteDTO clienteDTOConsultado = clienteDAOSQLServer.consultarPorCodigo(clienteDTO, connection);
		return clienteDTOConsultado;
	}

	public ArrayList<ClienteDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		ClienteDAOSQLServer clienteDAOSQLServer = new ClienteDAOSQLServer();
		ArrayList<ClienteDTO> clienteDTOLista = clienteDAOSQLServer.consultarTodo(connection);
		ZonaDAOSQLServer zonaDAOSQLServer = new ZonaDAOSQLServer();
		ZonaDTO zonaDTO = null;
		for (ClienteDTO clienteDTO : clienteDTOLista) {
			zonaDTO = zonaDAOSQLServer.consultarPorCodigo(clienteDTO.getZonaDTO(), connection);
			clienteDTO.setZonaDTO(zonaDTO);
		}
		return clienteDTOLista;
	}
}
